$(document).ready(function(){
    initMask();
    initEnviar();
    initGrid();
    iniBusca();
    initChecks();
    validaRemocao();
});

function initChecks(){
    $("#checkAllEd").live('change',function(){
        if($(this).is(':checked')){
            $(".checkAllEd").attr("checked",true);
        }else{
            $(".checkAllEd").attr("checked",false);
        }
    });
    
    $("#checkAllCon").live('change',function(){
        if($(this).is(':checked')){
            $(".checkAllCon").attr("checked",true);
        }else{
            $(".checkAllCon").attr("checked",false);
        }
    });
    
    $(".checkAllCon").live('change',function(){
        var checked = false;
        var unchecked = false;
        $(".checkAllCon").each(function(){
            if($(this).is(':checked')){
                checked = true;
            }else{
                unchecked = true;
            }
        });
        
        controlaEdicao($(this));
        
        if(checked && !unchecked){
            $("#checkAllCon").attr("checked",true);
        }else if(unchecked){
            $("#checkAllCon").attr("checked",false);
        }
        
    });
    
    $(".checkAllEd").live('change',function(){
        var checked = false;
        var unchecked = false;
        $(".checkAllEd").each(function(){
            if($(this).is(':checked')){
                checked = true;
            }else{
                unchecked = true;
            }
        });
        
        controlaConsulta($(this));
        
        if(checked && !unchecked){
            $("#checkAllEd").attr("checked",true);
        }else if(unchecked){
            $("#checkAllEd").attr("checked",false);
        }
        
    });
}

function controlaConsulta(inputEdt){
    var tr = inputEdt.closest('tr');
    if(inputEdt.is(':checked')){
        $(tr).find('input.checkAllCon').attr('checked',true);
    }else{
        $(tr).find('input.checkAllCon').attr('checked',false);
    }
}

function controlaEdicao(inputCons){
    var tr = inputCons.closest('tr');
    if(!inputCons.is(':checked')){
        $(tr).find('input.checkAllEd').attr('checked',false);
    }
}

function initMask(){
    $("input[alt]").setMask();
}

function initGrid(){
    $("#flex1").flexigrid({
        url: '/perfilAcesso/consulta/lista',
        dataType: 'xml',
        colModel : [
        {
            display: 'Id', 
            name : 'codigo', 
            width : 80, 
            sortable : true, 
            align: 'center'
        },

        {
            display: 'Descrição', 
            name : 'descricao', 
            width : 250, 
            sortable : true, 
            align: 'left'
        },

        {
            display: 'Data Cadastro', 
            name : 'dt_cadastro', 
            width : 180, 
            sortable : true, 
            align: 'center'
        }
        ],
        buttons : [
        {
            name: 'Add', 
            bclass: 'add', 
            onpress : adicionar
        },

        {
            name: 'Edit', 
            bclass: 'add', 
            onpress : edita
        },

        {
            separator: true
        }
        ],
        searchitems : [
        {
            display: 'Id', 
            name : 'codigo'
        },

        {
            display: 'Descrição', 
            name : 'descricao', 
            isdefault: true
        }
        ],
        sortname: "codigo",
        sortorder: "asc",
        usepager: true,
        title: 'Tipo de Usuário',
        useRp: true,
        rp: 15,
        showTableToggleBtn: true,
        width: 1200,
        height: 800
    }); 
}

function initEnviar(){
    $("#btnEnviar").live("click",function(event){
        event.preventDefault();
        removeMsgErro('initEnviar');
        
        if(!validaForm()){
            $.ajax({
                url: '/perfilAcesso/insere/valida',
                data: dataSend(),
                dataType: 'Json',
                type: 'POST',
                contentType: "application/x-www-form-urlencoded;charset=UTF-8",
                beforeSend: function(){
                },
                success: function(data){
                    if(!isEmpty(data.erros)){
                        for (i = 0; i < data.erros.length; i++) {
                            exibeMsgErro(data.erros[i], 'initEnviar');
                        }
                    }else{
                        $("#pesquisa_conteudo_form").submit();
                    }
                },
                error: function(){
                }
            });
        }
    });
}

function dataSend(){
    return $("#pesquisa_conteudo_form input,#pesquisa_conteudo_form select").serialize();
}

function validaRemocao(){
    $('#btnExcluir').live('click',function(){
        var answer = confirm("Tem certeza que deseja excluir?");
        if (answer){
            removeMsgErro('validaExclusao');
            $.ajax({
                url: '/perfilAcesso/insere/valida-remocao',
                data: $('#codigo').serialize(),
                dataType: 'Json',
                type: 'POST',
                contentType: "application/x-www-form-urlencoded;charset=UTF-8",
                beforeSend: function(){
                },
                success: function(data){
                    if(!isEmpty(data.erros)){
                        for (i = 0; i < data.erros.length; i++) {
                            exibeMsgErro(data.erros[i], 'validaExclusao');
                        }
                    }else{
                        removePerfilAcesso();
                    }
                },
                error: function(){
                }
            });
        }
    });
}

function removePerfilAcesso(){
    removeMsgErro('exclui1');
    var busca = $("#codigo").val();

    if(isEmpty(busca)){
        exibeMsgErro('É necessário selecionar um registro para ser removido.', 'exclui1');
    }else{
        window.location = '/perfilAcesso/insere/delete?codigo=' + busca;
    }
}

function edita(){
    removeMsgErro('edita1');
    var busca = $(".trSelected td[abbr='codigo'] div");

    if(busca.length == 0){
        exibeMsgErro('É necessário selecionar um registro para editar.', 'edita1');
    }else if(busca.length > 1){
        exibeMsgErro('É necessário somente um registro para editar.', 'edita1');
    }else if(isNaN(busca.html() * 1)){
        exibeMsgErro('Não é possível editar esse registro.', 'edita1');
    }else{
        window.location = '/perfilAcesso/edita?codigo=' + busca.html();
    }
}


function validaForm(){
    removeMsgErro(new Array("validaForm1","validaForm2","validaForm3"));
    var erro = false;
    if(isEmpty($("#descricao").val())){
        exibeMsgErro("É necessário preencher o campo 'Nome do Perfil de Acesso'","validaForm1" );
        erro = true;
    }
    
    return erro;
}

function adicionar(){
    window.location = '/perfilAcesso/insere';
}


function iniBusca(){
    $('#btnConsulta').live('click',function(event){
        event.preventDefault();
        var erros = new Array();
        var dtEx = $('#dt_expiracao').val();
        var deCad = $('#dt_cadastro').val();
        
        if(!isEmpty(dtEx) && !dateIsValid(dtEx)){
            erros['iniBUsca'] = 'Data de Expiração não é válida.'; 
        }
        
        if(!isEmpty(deCad) && !dateIsValid(deCad)){
            erros['iniBUsca'] = 'Data de Expiração não é válida.'; 
        }
        
        if(erros.length > 0){
            exibeMsgErro(erros, null);
        }else{
            var dt = $('#pesquisa_conteudo_form input').serializeArray();
            $("#flex1").flexOptions({
                params: dt
            }).flexReload();
        }
        
    });
}